//package com.xmindguoguo.boot.config.error;
//
//import javax.servlet.http.HttpServletRequest;
//
//import org.springframework.boot.autoconfigure.web.ErrorController;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//
//import com.xmindguoguo.boot.util.json.JsonResult;
//
///**
// * 异常的参考资料 全局错误页面
// * 
// * @ClassName MainsiteErrorController
// * @author <a href="892042158@qq.com" target="_blank">于国帅</a>
// * @date 2018年11月28日 上午9:44:05 javax.servlet.error.status_code
// * 
// *       该属性给出状态码，状态码可被存储，并在存储为java.lang.Integer数据类型后可被分析。
// * 
// *       javax.servlet.error.exception_type
// * 
// *       该属性给出异常类型的信息，异常类型可被存储，并在存储为java.lang.Class数据类型后可被分析。
// * 
// *       javax.servlet.error.message
// * 
// *       该属性给出确切错误消息的信息，信息可被存储，并在存储为java.lang.String数据类型后可被分析。
// * 
// *       javax.servlet.error.request_uri
// * 
// *       该属性给出有关URL调用Servlet的信息，信息可被存储，并在存储为java.lang.String数据类型后可被分析。
// * 
// *       javax.servlet.error.exception
// * 
// *       该属性给出异常产生的信息，信息可被存储，并在存储为java.lang.Throwable数据类型后可被分析。
// * 
// *       javax.servlet.error.servlet_name
// * 
// *       该属性给出Servlet的名称，名称可被存储，并在存储为java.lang.String数据类型后可被分析。
// */
//@Controller
//public class GlobalErrorController implements ErrorController {
//    @RequestMapping(value = "/ajaxError")
//    public Object handleAjaxError(HttpServletRequest request) {
//        return JsonResult.sendOk(null);
//    }
//
//    @RequestMapping(value = "/error")
//    public String handleError(HttpServletRequest request) {
//        // 通过这里判断出来对应的异常，然后进行相应的处理
//        System.err.println("该属性给出状态码，状态码可被存储，并在存储为java.lang.Integer数据类型后可被分析。");
//        System.err.println(request.getAttribute(" javax.servlet.error.exception_type"));
//
//        System.err.println("该属性给出异常类型的信息，异常类型可被存储，并在存储为java.lang.Class数据类型后可被分析。");
//
//        System.err.println(request.getAttribute("     javax.servlet.error.message"));
//
//        System.err.println("   该属性给出确切错误消息的信息，信息可被存储，并在存储为java.lang.String数据类型后可被分析。");
//
//        System.err.println(request.getAttribute("  javax.servlet.error.request_uri"));
//
//        System.err.println(" 该属性给出有关URL调用Servlet的信息，信息可被存储，并在存储为java.lang.String数据类型后可被分析。");
//
//        System.err.println(request.getAttribute("    javax.servlet.error.exception"));
//        System.err.println(" 该属性给出异常产生的信息，信息可被存储，并在存储为java.lang.Throwable数据类型后可被分析。");
//
//        System.err.println(request.getAttribute("  javax.servlet.error.servlet_name"));
//
//        System.err.println("  该属性给出Servlet的名称，名称可被存储，并在存储为java.lang.String数据类型后可被分析。");
//        /* 1. 异常返回的提示  页面或者ajax   
//         * 2.友好的提示   根据 异常转换友好工具类  转换成相应的提示    或者考虑做一个数据库
//         * 3. 异常对应的日志进行记录
//         */
////        if (HttpUtil.isAjax(request)) {
////            return "forward:ajaxError";
////        }
//        // 可是怎么决定ajax 错误呢？
//        // 采用方法的重定向
//        // 获取statusCode:401,404,500
//        Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
//        System.err.println();
//        if (statusCode == 401) {
//            return "/401";
//        } else if (statusCode == 404) {
//            return "/404";
//        } else if (statusCode == 403) {
//            return "/403";
//        } else {
//            return "/500";
//        }
//    }
//
//    @Override
//    public String getErrorPath() {
//
//        return "/error";
//    }
//}